import path from 'path'
import { createDefineMock } from 'vite-plugin-mock-dev-server'

const defineMock = createDefineMock((mock) => {
  mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url) // 路径会拼接为: /dev-api + url
})

export default defineMock([
  {
    url: '/api/v1/menus/routes', // 路径会拼接为: /dev-api/api/v1/menus/routes
    method: ['GET'],
    body: {
      code: '00000',
      data: [
        {
          path: '/system',
          component: 'Layout',
          redirect: '/system/user',
          meta: {
            title: '系统管理',
            icon: 'system',
            hidden: false,
            roles: ['ADMIN'],
            keepAlive: true
          },
          children: [
            {
              path: 'user',
              component: 'system/user/index',
              name: 'User',
              meta: {
                title: '用户管理',
                icon: 'user',
                hidden: false,
                roles: ['ADMIN'],
                keepAlive: true
              }
            },
            // {
            //   path: 'role',
            //   component: 'system/role/index',
            //   name: 'Role',
            //   meta: {
            //     title: '角色管理',
            //     icon: 'role',
            //     hidden: false,
            //     roles: ['ADMIN'],
            //     keepAlive: true
            //   }
            // },
            // {
            //   path: 'menu',
            //   component: 'system/menu/index',
            //   name: 'Menu',
            //   meta: {
            //     title: '菜单管理',
            //     icon: 'menu',
            //     hidden: false,
            //     roles: ['ADMIN'],
            //     keepAlive: true
            //   }
            // },
            // {
            //   path: 'dept',
            //   component: 'system/dept/index',
            //   name: 'Dept',
            //   meta: {
            //     title: '部门管理',
            //     icon: 'tree',
            //     hidden: false,
            //     roles: ['ADMIN'],
            //     keepAlive: true
            //   }
            // },
            {
              path: 'company',
              component: 'system/company/index',
              name: 'Company',
              meta: {
                title: '公司管理',
                icon: 'tree',
                hidden: false,
                roles: ['ADMIN'],
                keepAlive: true
              }
            },
            {
              path: 'dict',
              component: 'system/dict/index',
              name: 'DictType',
              meta: {
                title: '字典管理',
                icon: 'dict',
                hidden: false,
                roles: ['ADMIN'],
                keepAlive: true
              }
            }
          ]
        }
        // {
        //   path: '/api',
        //   component: 'Layout',
        //   meta: {
        //     title: '接口',
        //     icon: 'api',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'apidoc',
        //       component: 'demo/api-doc',
        //       name: 'Apidoc',
        //       meta: {
        //         title: '接口文档',
        //         icon: 'api',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: false
        //       }
        //     }
        //   ]
        // },
        // {
        //   path: '/external-link',
        //   component: 'Layout',
        //   redirect: 'noredirect',
        //   meta: {
        //     title: '外部链接',
        //     icon: 'link',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'https://juejin.cn/post/7228990409909108793',
        //       meta: {
        //         title: 'document',
        //         icon: 'document',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     }
        //   ]
        // }
        // {
        //   path: '/multi-level',
        //   component: 'Layout',
        //   redirect: '/multi-level/multi-level1',
        //   meta: {
        //     title: '多级菜单',
        //     icon: 'multi_level',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'multi-level1',
        //       component: 'demo/multi-level/level1',
        //       redirect: '/multi-level/multi-level2',
        //       meta: {
        //         title: '菜单一级',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       },
        //       children: [
        //         {
        //           path: 'multi-level2',
        //           component: 'demo/multi-level/children/level2',
        //           redirect: '/multi-level/multi-level2/multi-level3-1',
        //           meta: {
        //             title: '菜单二级',
        //             icon: '',
        //             hidden: false,
        //             roles: ['ADMIN'],
        //             keepAlive: true
        //           },
        //           children: [
        //             {
        //               path: 'multi-level3-1',
        //               component: 'demo/multi-level/children/children/level3-1',
        //               name: 'MultiLevel31',
        //               meta: {
        //                 title: '菜单三级-1',
        //                 icon: '',
        //                 hidden: false,
        //                 roles: ['ADMIN'],
        //                 keepAlive: true
        //               }
        //             },
        //             {
        //               path: 'multi-level3-2',
        //               component: 'demo/multi-level/children/children/level3-2',
        //               name: 'MultiLevel32',
        //               meta: {
        //                 title: '菜单三级-2',
        //                 icon: '',
        //                 hidden: false,
        //                 roles: ['ADMIN'],
        //                 keepAlive: true
        //               }
        //             }
        //           ]
        //         }
        //       ]
        //     }
        //   ]
        // },
        // {
        //   path: '/component',
        //   component: 'Layout',
        //   meta: {
        //     title: '组件封装',
        //     icon: 'menu',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'wang-editor',
        //       component: 'demo/wang-editor',
        //       name: 'wang-editor',
        //       meta: {
        //         title: '富文本编辑器',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'upload',
        //       component: 'demo/upload',
        //       name: 'upload',
        //       meta: {
        //         title: '图片上传',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'icon-selector',
        //       component: 'demo/icon-selector',
        //       name: 'icon-selector',
        //       meta: {
        //         title: '图标选择器',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'dict-demo',
        //       component: 'demo/dict',
        //       name: 'DictDemo',
        //       meta: {
        //         title: '字典组件',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'taginput',
        //       component: 'demo/taginput',
        //       name: 'taginput',
        //       meta: {
        //         title: '标签输入框',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'signature',
        //       component: 'demo/signature',
        //       name: 'signature',
        //       meta: {
        //         title: '签名',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'table',
        //       component: 'demo/table',
        //       name: 'Table',
        //       meta: {
        //         title: '表格',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     }
        //   ]
        // },
        // {
        //   path: '/table',
        //   component: 'Layout',
        //   meta: {
        //     title: 'Table',
        //     icon: 'table',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'dynamic-table',
        //       component: 'demo/table/dynamic-table/index',
        //       name: 'DynamicTable',
        //       meta: {
        //         title: '动态Table',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'drag-table',
        //       component: 'demo/table/drag-table',
        //       name: 'DragTable',
        //       meta: {
        //         title: '拖拽Table',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'complex-table',
        //       component: 'demo/table/complex-table',
        //       name: 'ComplexTable',
        //       meta: {
        //         title: '综合Table',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     }
        //   ]
        // }
        // {
        //   path: '/function',
        //   component: 'Layout',
        //   meta: {
        //     title: '功能演示',
        //     icon: 'menu',
        //     hidden: false,
        //     roles: ['ADMIN'],
        //     keepAlive: true
        //   },
        //   children: [
        //     {
        //       path: 'permission',
        //       component: 'demo/permission/page',
        //       name: 'Permission',
        //       meta: {
        //         title: 'Permission',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'icon-demo',
        //       component: 'demo/icons',
        //       name: 'Icons',
        //       meta: {
        //         title: '图标',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'websocket',
        //       component: 'demo/websocket',
        //       name: 'Websocket',
        //       meta: {
        //         title: 'Websocket',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     },
        //     {
        //       path: 'other',
        //       component: 'demo/other',
        //       meta: {
        //         title: '敬请期待...',
        //         icon: '',
        //         hidden: false,
        //         roles: ['ADMIN'],
        //         keepAlive: true
        //       }
        //     }
        //   ]
        // }
      ],
      msg: '一切ok'
    }
  },

  {
    url: '/api/v1/menus', // 路径会拼接为: /dev-api/api/v1/menus/routes
    method: ['GET'],
    body: {
      code: '00000',
      data: [
        {
          id: 1,
          parentId: 0,
          name: '系统管理',
          type: 'CATALOG',
          path: '/system',
          component: 'Layout',
          sort: 1,
          visible: 1,
          icon: 'system',
          redirect: '/system/user',
          perm: null,
          children: [
            {
              id: 2,
              parentId: 1,
              name: '用户管理',
              type: 'MENU',
              path: 'user',
              component: 'system/user/index',
              sort: 1,
              visible: 1,
              icon: 'user',
              redirect: null,
              perm: null,
              children: [
                {
                  id: 31,
                  parentId: 2,
                  name: '用户新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: '',
                  perm: 'sys:user:add',
                  children: []
                },
                {
                  id: 32,
                  parentId: 2,
                  name: '用户编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 2,
                  visible: 1,
                  icon: '',
                  redirect: '',
                  perm: 'sys:user:edit',
                  children: []
                },
                {
                  id: 33,
                  parentId: 2,
                  name: '用户删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: '',
                  perm: 'sys:user:delete',
                  children: []
                },
                {
                  id: 88,
                  parentId: 2,
                  name: '重置密码',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 4,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:user:reset_pwd',
                  children: []
                }
              ]
            },
            {
              id: 3,
              parentId: 1,
              name: '角色管理',
              type: 'MENU',
              path: 'role',
              component: 'system/role/index',
              sort: 2,
              visible: 1,
              icon: 'role',
              redirect: null,
              perm: null,
              children: [
                {
                  id: 70,
                  parentId: 3,
                  name: '角色新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:role:add',
                  children: []
                },
                {
                  id: 71,
                  parentId: 3,
                  name: '角色编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 2,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:role:edit',
                  children: []
                },
                {
                  id: 72,
                  parentId: 3,
                  name: '角色删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:role:delete',
                  children: []
                }
              ]
            },
            {
              id: 4,
              parentId: 1,
              name: '菜单管理',
              type: 'MENU',
              path: 'menu',
              component: 'system/menu/index',
              sort: 3,
              visible: 1,
              icon: 'menu',
              redirect: null,
              perm: null,
              children: [
                {
                  id: 73,
                  parentId: 4,
                  name: '菜单新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:menu:add',
                  children: []
                },
                {
                  id: 74,
                  parentId: 4,
                  name: '菜单编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:menu:edit',
                  children: []
                },
                {
                  id: 75,
                  parentId: 4,
                  name: '菜单删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:menu:delete',
                  children: []
                }
              ]
            },
            {
              id: 5,
              parentId: 1,
              name: '部门管理',
              type: 'MENU',
              path: 'dept',
              component: 'system/dept/index',
              sort: 4,
              visible: 1,
              icon: 'tree',
              redirect: null,
              perm: null,
              children: [
                {
                  id: 76,
                  parentId: 5,
                  name: '部门新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dept:add',
                  children: []
                },
                {
                  id: 77,
                  parentId: 5,
                  name: '部门编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 2,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dept:edit',
                  children: []
                },
                {
                  id: 78,
                  parentId: 5,
                  name: '部门删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dept:delete',
                  children: []
                }
              ]
            },
            {
              id: 6,
              parentId: 1,
              name: '字典管理',
              type: 'MENU',
              path: 'dict',
              component: 'system/dict/index',
              sort: 5,
              visible: 1,
              icon: 'dict',
              redirect: null,
              perm: null,
              children: [
                {
                  id: 79,
                  parentId: 6,
                  name: '字典类型新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict_type:add',
                  children: []
                },
                {
                  id: 81,
                  parentId: 6,
                  name: '字典类型编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 2,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict_type:edit',
                  children: []
                },
                {
                  id: 84,
                  parentId: 6,
                  name: '字典类型删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 3,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict_type:delete',
                  children: []
                },
                {
                  id: 85,
                  parentId: 6,
                  name: '字典数据新增',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 4,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict:add',
                  children: []
                },
                {
                  id: 86,
                  parentId: 6,
                  name: '字典数据编辑',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 5,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict:edit',
                  children: []
                },
                {
                  id: 87,
                  parentId: 6,
                  name: '字典数据删除',
                  type: 'BUTTON',
                  path: '',
                  component: null,
                  sort: 6,
                  visible: 1,
                  icon: '',
                  redirect: null,
                  perm: 'sys:dict:delete',
                  children: []
                }
              ]
            }
          ]
        },
        {
          id: 40,
          parentId: 0,
          name: '接口文档',
          type: 'CATALOG',
          path: '/api',
          component: 'Layout',
          sort: 7,
          visible: 1,
          icon: 'api',
          redirect: '',
          perm: null,
          children: [
            {
              id: 41,
              parentId: 40,
              name: 'Apifox',
              type: 'MENU',
              path: 'apifox',
              component: 'demo/api/apifox',
              sort: 1,
              visible: 1,
              icon: 'api',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 103,
              parentId: 40,
              name: 'Swagger',
              type: 'MENU',
              path: 'swagger',
              component: 'demo/api/swagger',
              sort: 2,
              visible: 0,
              icon: 'api',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 104,
              parentId: 40,
              name: 'Knife4j',
              type: 'MENU',
              path: 'knife4j',
              component: 'demo/api/knife4j',
              sort: 3,
              visible: 0,
              icon: 'api',
              redirect: '',
              perm: null,
              children: []
            }
          ]
        },
        {
          id: 26,
          parentId: 0,
          name: '平台文档',
          type: 'CATALOG',
          path: '/doc',
          component: 'Layout',
          sort: 8,
          visible: 1,
          icon: 'document',
          redirect: null,
          perm: null,
          children: [
            {
              id: 102,
              parentId: 26,
              name: '平台文档(内嵌)',
              type: 'EXTLINK',
              path: 'internal-doc',
              component: 'demo/internal-doc',
              sort: 1,
              visible: 1,
              icon: 'document',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 30,
              parentId: 26,
              name: '平台文档(外链)',
              type: 'EXTLINK',
              path: 'https://juejin.cn/post/7228990409909108793',
              component: '',
              sort: 2,
              visible: 1,
              icon: 'link',
              redirect: '',
              perm: null,
              children: []
            }
          ]
        },
        {
          id: 20,
          parentId: 0,
          name: '多级菜单',
          type: 'CATALOG',
          path: '/multi-level',
          component: 'Layout',
          sort: 9,
          visible: 1,
          icon: 'cascader',
          redirect: '/multi-level/multi-level1',
          perm: null,
          children: [
            {
              id: 21,
              parentId: 20,
              name: '菜单一级',
              type: 'MENU',
              path: 'multi-level1',
              component: 'demo/multi-level/level1',
              sort: 1,
              visible: 1,
              icon: '',
              redirect: '/multi-level/multi-level2',
              perm: null,
              children: [
                {
                  id: 22,
                  parentId: 21,
                  name: '菜单二级',
                  type: 'MENU',
                  path: 'multi-level2',
                  component: 'demo/multi-level/children/level2',
                  sort: 1,
                  visible: 1,
                  icon: '',
                  redirect: '/multi-level/multi-level2/multi-level3-1',
                  perm: null,
                  children: [
                    {
                      id: 23,
                      parentId: 22,
                      name: '菜单三级-1',
                      type: 'MENU',
                      path: 'multi-level3-1',
                      component: 'demo/multi-level/children/children/level3-1',
                      sort: 1,
                      visible: 1,
                      icon: '',
                      redirect: '',
                      perm: null,
                      children: []
                    },
                    {
                      id: 24,
                      parentId: 22,
                      name: '菜单三级-2',
                      type: 'MENU',
                      path: 'multi-level3-2',
                      component: 'demo/multi-level/children/children/level3-2',
                      sort: 2,
                      visible: 1,
                      icon: '',
                      redirect: '',
                      perm: null,
                      children: []
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          id: 36,
          parentId: 0,
          name: '组件封装',
          type: 'CATALOG',
          path: '/component',
          component: 'Layout',
          sort: 10,
          visible: 1,
          icon: 'menu',
          redirect: '',
          perm: null,
          children: [
            {
              id: 37,
              parentId: 36,
              name: '富文本编辑器',
              type: 'MENU',
              path: 'wang-editor',
              component: 'demo/wang-editor',
              sort: 1,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 38,
              parentId: 36,
              name: '图片上传',
              type: 'MENU',
              path: 'upload',
              component: 'demo/upload',
              sort: 2,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 39,
              parentId: 36,
              name: '图标选择器',
              type: 'MENU',
              path: 'icon-selector',
              component: 'demo/icon-selector',
              sort: 3,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 95,
              parentId: 36,
              name: '字典组件',
              type: 'MENU',
              path: 'dict-demo',
              component: 'demo/dict',
              sort: 4,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 93,
              parentId: 36,
              name: '签名',
              type: 'MENU',
              path: 'signature',
              component: 'demo/signature',
              sort: 6,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 94,
              parentId: 36,
              name: '表格',
              type: 'MENU',
              path: 'table',
              component: 'demo/table',
              sort: 7,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            }
          ]
        },
        {
          id: 89,
          parentId: 0,
          name: '功能演示',
          type: 'CATALOG',
          path: '/function',
          component: 'Layout',
          sort: 11,
          visible: 1,
          icon: 'menu',
          redirect: '',
          perm: null,
          children: [
            {
              id: 97,
              parentId: 89,
              name: 'Icons',
              type: 'MENU',
              path: 'icon-demo',
              component: 'demo/icons',
              sort: 2,
              visible: 1,
              icon: 'el-icon-edit',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 90,
              parentId: 89,
              name: 'Websocket',
              type: 'MENU',
              path: '/function/websocket',
              component: 'demo/websocket',
              sort: 3,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            },
            {
              id: 91,
              parentId: 89,
              name: '敬请期待...',
              type: 'CATALOG',
              path: 'other',
              component: 'demo/other',
              sort: 4,
              visible: 1,
              icon: '',
              redirect: '',
              perm: null,
              children: []
            }
          ]
        }
      ],
      msg: '一切ok'
    }
  }
])
